﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tanmia.Basis.Core;

namespace Tanmia.Warehouse.Core
{
    /// <summary>
    /// مميز المادة
    /// يمكن لإحدى المواد أن تكون من نفس النوع تماماً إنما تتميز كل واحدة عن غيرها من خلال مميز معين كاللون مثلاً
    /// </summary>
    public class Discriminator : BaseBusinessObject, IMovableElement, ICategorizable
    {
        private Discriminator parent;
        private Discrimination discrimination;

        /// <summary>
        /// أب المميز الحالي, من أجل إنشاء بنية شجرية للمميزات
        /// </summary>
        public virtual Discriminator Parent
        {
            get { return parent; }
            set { SetValue<Discriminator>("Parent", ref parent, value); }
        }

        /// <summary>
        /// مميز المادة, يتسخدم من أجل الوصول إلى المادة
        /// </summary>
        public virtual Discrimination Discrimination
        {
            get { return discrimination; }
            set { SetValue<Discrimination>("Discrimination", ref discrimination, value); }
        }

        #region IMovableElement Members

        private int elementID;

        /// <summary>
        /// رقم تعريف مميز إحدى المواد
        /// </summary>
        public virtual int ElementID
        {
            get { return elementID; }
            set { SetValue<int>("ElementID", ref elementID, value); }
        }

        #endregion

        #region ICategorizable Members

        private string name;
        private string engName;
        private string code;
        private string number;

        /// <summary>
        /// اسم المميز
        /// </summary>
        public virtual string Name
        {
            get { return name; }
            set { SetValue<string>("Name", ref name, value); }
        }

        /// <summary>
        /// الاسم الأجنبي للمميز
        /// </summary>
        public virtual string EngName
        {
            get { return engName; }
            set { SetValue<string>("EngName", ref engName, value); }
        }

        /// <summary>
        /// رمز المميز
        /// </summary>
        public virtual string Code
        {
            get { return code; }
            set { SetValue<string>("Code", ref code, value); }
        }

        /// <summary>
        /// رقم المميز
        /// </summary>
        public virtual string Number
        {
            get { return number; }
            set { SetValue<string>("Number", ref number, value); }
        }

        #endregion
    }
}
